Chứng minh Thuật toán Dijkstra

Ý tưởng của thuật toán được chứng minh như sau.

Chúng ta sẽ chỉ ra, khi một đỉnh v được bổ sung vào tập S, thì d[v] là giá trị của đường đi ngắn nhất từ nguồn s đến v.

Theo định nghĩa nhãn d, d[v] là giá trị của đường đi ngắn nhất trong các đường đi từ nguồn s, qua các đỉnh trong S, rồi theo một cạnh nối trực tiếp u-v đến v.

Giả sử tồn tại một đường đi từ s đến v có giá trị bé hơn d[v]. Như vậy trong đường đi, tồn tại đỉnh giữa s và v không thuộc S. Chọn w là đỉnh đầu tiên như vậy,

Tài liệu tham khảo

WikiPedia: Thuật toán Dijkstra http://bioinfo.ict.ac.cn/~dbu/AlgorithmCourses/Lec... http://quickgraph.codeplex.com/ http://www.codeproject.com/KB/recipes/FastHeapDijk... http://www.codeproject.com/KB/recipes/ShortestPath... http://code.google.com/p/annas/ http://www.mathworks.com/matlabcentral/fileexchang... http://www.rawbytes.com/dijkstras-algorithm-in-c/ http://www.stackframe.com/software/PathFinder http://bonsaicode.wordpress.com/2011/01/04/program... http://www.cs.sunysb.edu/~skiena/combinatorica/ani...